#!/bin/bash

#
# This file is part of util-linux.
#
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This file is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#


TS_TOPDIR="${0%/*}/../.."
TS_DESC="script"

. $TS_TOPDIR/functions.sh
ts_init "$*"

ts_check_test_command "$TS_CMD_SFDISK"
ts_check_test_command "$TS_CMD_WIPEFS"

ts_skip_nonroot

# set global variable TS_DEVICE
ts_scsi_debug_init dev_size_mb=100 sector_size=512 physblk_exp=3

ts_init_subtest "v2.32"
$TS_CMD_WIPEFS -a ${TS_DEVICE} &> /dev/null
udevadm settle
$TS_CMD_SFDISK ${TS_DEVICE} >> $TS_OUTPUT 2>> $TS_ERRLOG <<EOF
label: gpt
label-id: 613005F9-1C8C-E141-8AEB-F32E8E296C75
device: ${TS_DEVICE}
unit: sectors
first-lba: 2048
last-lba: 204766

${TS_DEVICE}1 : start=        2048, size=       20480, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, uuid=28A432A3-8D63-3142-B9F5-68A2BF2BC60B
${TS_DEVICE}2 : start=       22528, size=       22528, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, uuid=6A7D17FC-7252-564A-9B68-5E2107999BF1
${TS_DEVICE}3 : start=       45056, size=       24576, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, uuid=26C303E4-0321-3346-B9EF-BDD39BEA1166
${TS_DEVICE}4 : start=       69632, size=      135135, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, uuid=AF79D434-C8B3-2445-80FB-317AB157447C
EOF
udevadm settle
$TS_CMD_SFDISK --list -o START,END,SIZE,UUID,TYPE,NAME ${TS_DEVICE} >> $TS_OUTPUT 2>> $TS_ERRLOG
ts_fdisk_clean $TS_DEVICE
ts_finalize_subtest


ts_init_subtest "v2.35"
$TS_CMD_WIPEFS -a ${TS_DEVICE} &> /dev/null
udevadm settle
$TS_CMD_SFDISK ${TS_DEVICE} >> $TS_OUTPUT 2>> $TS_ERRLOG <<EOF
label: gpt
label-id: 613005F9-1C8C-E141-8AEB-F32E8E296C75
device: ${TS_DEVICE}
unit: sectors
first-lba: 2048
last-lba: 204766
sector-size: 512

${TS_DEVICE}1 : start=        2048, size=       20480, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, uuid=28A432A3-8D63-3142-B9F5-68A2BF2BC60B
${TS_DEVICE}2 : start=       22528, size=       22528, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, uuid=6A7D17FC-7252-564A-9B68-5E2107999BF1
${TS_DEVICE}3 : start=       45056, size=       24576, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, uuid=26C303E4-0321-3346-B9EF-BDD39BEA1166
${TS_DEVICE}4 : start=       69632, size=      135135, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, uuid=AF79D434-C8B3-2445-80FB-317AB157447C
EOF
udevadm settle
$TS_CMD_SFDISK --list -o START,END,SIZE,UUID,TYPE,NAME ${TS_DEVICE} >> $TS_OUTPUT 2>> $TS_ERRLOG
ts_fdisk_clean $TS_DEVICE
ts_finalize_subtest


ts_init_subtest "current"
$TS_CMD_SFDISK --dump ${TS_DEVICE} > $TS_OUTPUT.dump 2>> $TS_ERRLOG
$TS_CMD_WIPEFS -a ${TS_DEVICE} &> /dev/null
udevadm settle
cat $TS_OUTPUT.dump | $TS_CMD_SFDISK ${TS_DEVICE} >> $TS_OUTPUT 2>> $TS_ERRLOG
udevadm settle
$TS_CMD_SFDISK --list -o START,END,SIZE,UUID,TYPE,NAME ${TS_DEVICE} >> $TS_OUTPUT 2>> $TS_ERRLOG
ts_fdisk_clean $TS_DEVICE
ts_finalize_subtest

ts_finalize
